home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / dev / misc / RenderLib.lha / RenderLib / Include / render / renderhooks.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-05  |  3.6 KB  |  140 lines

  1. #ifndef RENDERHOOKS_H
  2. #define RENDERHOOKS_H
  3. /*
  4. **    $VER: renderhooks.h 18.2 (5.3.97)
  5. **
  6. **    render.library definitions for callback hooks
  7. **
  8. **    © 1996 TEK neosçientists
  9. */
  10.  
  11.  
  12.  
  13. #ifndef EXEC_TYPES_H
  14. #include <exec/types.h>
  15. #endif
  16.  
  17. #ifndef UTILITY_HOOKS_H
  18. #include <utility/hooks.h>
  19. #endif
  20.  
  21. /******************************************************************************
  22.  
  23.     Progress Hook Message
  24.  
  25.     Whenever your progress hook is called, your function
  26.     receives a pointer to this structure in a1. Check the
  27.     message type and proceed accordingly.
  28.  
  29.     Also, you get a pointer to the object of concern in a2.
  30.     Warning: This is intended for identification only. You
  31.     are NOT allowed to perform operations inside your hook
  32.     function that could modify this object. If you try to
  33.     do so, your code will run into a deadlock.
  34.  
  35.     Your progress hook has to return TRUE or FALSE
  36.     for continuation respective abortion.
  37.  
  38. ******************************************************************************/
  39.  
  40. struct    RND_ProgressMessage
  41. {
  42.     ULONG    RND_PMsg_type;        /* type of message, see below      */
  43.     ULONG    RND_PMsg_count;        /* number to be displayed...       */
  44.     ULONG    RND_PMsg_total;        /* ...inside this range of numbers */
  45. };
  46.  
  47. /******************************************************************************
  48.  
  49.     Types of progress messages
  50.  
  51.     Neither depend on a certain number of calls nor on
  52.     calls in a specific order. It's up to the library
  53.     to decide
  54.     - how often to call your progress hook
  55.     - in what order to submit different types of messages
  56.     - in what step rate to call your progress hook
  57.     - whether to call your progress hook at all
  58.  
  59. ******************************************************************************/
  60.  
  61.     /* number of lines added to a histogram.
  62.        a2 is a pointer to the histogram. */
  63.  
  64. #define    PMSGTYPE_LINES_ADDED        1
  65.  
  66.  
  67.     /* number of colors chosen during quantization.
  68.        a2 is a pointer to the histogram. */
  69.  
  70. #define PMSGTYPE_COLORS_CHOSEN        2
  71.  
  72.  
  73.     /* number of histogram entries adapted to the palette.
  74.        a2 is a pointer to the histogram. */
  75.  
  76. #define PMSGTYPE_COLORS_ADAPTED        3
  77.  
  78.  
  79.     /* number of lines rendered to a palette.
  80.        a2 is a pointer to the palette. */
  81.  
  82. #define PMSGTYPE_LINES_RENDERED        4
  83.  
  84.  
  85.     /* number of lines converted.
  86.        a2 is NULL. */
  87.  
  88. #define PMSGTYPE_LINES_CONVERTED    5
  89.  
  90.  
  91.  
  92.  
  93. /******************************************************************************
  94.  
  95.     Line Hook Message
  96.  
  97.     This hook is executed by functions such as Render() once
  98.     before and once after converting a line.
  99.  
  100.     When your line hook is called, your function receives a
  101.     pointer to this structure in a1. Check the message type and
  102.     proceed accordingly. Also, you get a pointer to the object
  103.     of concern in a2. This is either the source or destination
  104.     buffer.
  105.  
  106.     This allows you to draw, save, convert etc. while rendering,
  107.     and to save memory. Specify RND_DestWidth = 0 to render into
  108.     a single-line buffer, and RND_SourceWidth = 0 to fetch from a
  109.     single-line buffer.
  110.  
  111.     Your line hook has to return TRUE or FALSE
  112.     for continuation respective abortion.
  113.  
  114. ******************************************************************************/
  115.  
  116. struct    RND_LineMessage
  117. {
  118.     ULONG    RND_LMsg_type;        /* type of message, see below */
  119.     ULONG    RND_LMsg_row;        /* the row number being processed */
  120. };
  121.  
  122.  
  123.  
  124. /* just completed a line. a2 is a pointer to the rendered data.
  125.    You may read from this buffer. */
  126.  
  127. #define    LMSGTYPE_LINE_RENDERED        6
  128.  
  129.  
  130. /* now converting a new line. a2 is a pointer to the source buffer
  131.    where the input is expected. You may write to this buffer. */
  132.  
  133. #define    LMSGTYPE_LINE_FETCH        7
  134.  
  135.  
  136.  
  137. /*****************************************************************************/
  138.  
  139. #endif
  140.